#include "../inc/image.h"

// Image 构造函数，初始化图像元素
Image::Image(UI_Object* parent)
{
  // 设置父对象
  this->parent = parent;

  // 创建一个 LVGL 图像对象，并将其父对象设置为传入的 parent
  this_object = lv_img_create(parent->get_lv_obj_t());

  // 设置图像的默认宽度和高度
  this->width = 32;
  this->height = 32;

  // 设置 LVGL 图像对象的高度和宽度
  lv_obj_set_height(this_object, this->height);
  lv_obj_set_width(this_object, this->width);

  // lv_obj_set_width(this_object, 32);   /// 32
  // lv_obj_set_height(this_object, 32);    /// 33
  // 设置图像对象的对齐方式为居中
  lv_obj_set_align(this_object, LV_ALIGN_CENTER);

  // 添加高级点击检测和可点击标志
  lv_obj_add_flag(this_object, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);

  // 清除滚动标志
  lv_obj_clear_flag(this_object, LV_OBJ_FLAG_SCROLLABLE);

  // 以下代码被注释掉，可以用于添加点击事件回调
  // lv_obj_add_event_cb(this_object, [](lv_event_t* e) {
  //   printf("Image event\n");
  // }, LV_EVENT_CLICKED, NULL);
}

// Image 析构函数
Image::~Image()
{
  // 析构函数内容为空
}

// 设置图像的源
void Image::set_img(const void* src)
{
  // 设置 LVGL 图像对象的源
  lv_img_set_src(this_object, src);
}